// main.js 主进程
const path = require('path')
const axios = require("axios").default;
const { app, BrowserWindow, Menu, Tray, dialog, ipcMain } = require('electron')
const remote = require("@electron/remote/main")// 1.引入remote模块，需要先安装
remote.initialize() // 2.初始化remote模块

// // 解决cookie跨域
// var myCookie;
// const axiosClient = axios.create({
//   baseURL: 'http://guowei.fun/api',
// });
// axiosClient.interceptors.request.use(
//   (config) => {
//     if (myCookie !== undefined) {
//       // 添加Cookie请求头
//       config.headers["Cookie"] = myCookie;
//     }
//     return config;
//   },
//   (error) => Promise.reject(error.request.data.err)
// );
// //ipcMain.on 将接受 从渲染进程发过来的“btnclick”事件
// ipcMain.on("login", function (event, arg) {
//   console.log("渲染进程", arg.phone, arg.password);
//   axiosClient.post("/login/cellphone", { phone: arg.phone, password: arg.password }).then((res) => {
//     myCookie = res.data.cookie;
//     console.log(myCookie);
//     // 拿到cookie将数据发送给渲染进程
//     event.sender.send("cookie", myCookie);
//   }).catch((err) => console.log(err));
// });


// 关闭警告
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true'

// 禁用当前应用程序的硬件加速
app.disableHardwareAcceleration()

let win;// 窗口对象全局变量

// 创建窗口方法
function createWindow() {
  win = new BrowserWindow({
    width: 1001,// 窗体宽度
    minWidth: 1001,// 窗体最小宽度
    height: 600,// 窗体高度
    minHeight: 600,// 窗体最小高度
    frame: false,// 去掉标题栏
    // resizable: false,// 禁止窗口大小调整
    // transparent: true,// 透明窗体
    // titleBarStyle: 'hidden',// 隐藏标题栏
    webPreferences: {// 配置
      nodeIntegration: true,//允许渲染进程使用nodejs
      contextIsolation: false,//允许渲染进程使用nodejs
      preload: path.join(__dirname, 'preload.js'),// 预加载脚本
      webSecurity: false,// 允许跨域
    }
  })
  // app.isPackaged 用于判断是否打包，如果是打包则加载打包后的页面，否则加载开发页面
  if (app.isPackaged) {
    win.loadFile(path.join(__dirname, "/dist/index.html"));// 加载打包后的页面
  } else {
    win.loadURL("http://127.0.0.1:5173");// 本地启动的vue项目路径
    win.webContents.openDevTools();// 打开F12开发者调试工具
  }
  // 3.开启remote模块
  remote.enable(win.webContents)
}

// dialog 退出确认
function exitConfirm() {
  dialog.showMessageBox({
    type: 'none',
    buttons: ['确定', '取消'],
    title: '提示',
    message: '确定要退出吗？',
    defaultId: 1,
    cancelId: 1,
  }).then(result => {
    if (result.response === 0) {
      app.quit()
    }
  })
}

// 创建系统托盘方法
function createTray() {
  const tray = new Tray(path.join(__dirname, '/src/assets/img/logo2.png'))
  const contextMenu = Menu.buildFromTemplate([
    { label: '显示', type: 'normal', click: () => { win.show() } },
    { label: '刷新', type: 'normal', click: () => { win.reload() } },
    { label: '开发者工具', type: 'normal', click: () => { win.webContents.openDevTools() } },
    { label: '最小化到托盘', type: 'normal', click: () => { win.minimize(); win.hide(); } },
    { label: '退出', type: 'normal', click: () => { exitConfirm() } },
  ])
  tray.setToolTip('这是一个系统托盘图标')
  tray.setContextMenu(contextMenu)
  tray.on('click', () => {
    win.isVisible() ? win.hide() : win.show() // 点击托盘图标显示窗口，再次点击隐藏窗口
  })
}

// 监听窗口关闭事件
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

// 初始化完成后创建窗口
app.whenReady().then(() => {
  createWindow()
  createTray()
  // 监听激活窗口(macOS),没有窗口时创建窗口
  app.on('activate', function () {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})